import { useCounterStore } from "@/stores/counter.js";

/**
 * 查询目标数据在目标数组的路劲
 * @param {Object} config 所需参数
 * @returns {Array}
 */

export function getRecorderAryByDeep(_config) {
  // targetData：目标数组
  // targetValue：目标值
  // label：可选的标签对象，valueKey可选的目标匹配键名，childKey可选的子目标键名，resultKey：可选的返回结果键名
  const config = {
    targetData: _config.targetData,
    targetValue: _config.targetValue,
    label: _config.label || {valueKey: 'id', childKey: 'children', resultKey: 'id'}
  }
  let result = [];
  let checkFlag = false;
  const deepFor = (data = []) => {
    for (let i = 0; i < data.length; i++) {
      const item = data[i]
      result.push(item[config.label.resultKey || config.label.valueKey])
      if (item[config.label.valueKey] === config.targetValue) {
        checkFlag = true
        return false;
      } else {
        if (item[config.label.childKey] && item[config.label.childKey].length > 0) {
          deepFor(item[config.label.childKey]);
        }
        if (!checkFlag) {
          result.splice(result.length - 1, 1)
        } else {
          return false;
        }
      }
    }
  }
  deepFor(config.targetData || []);
  return result
}

/**
 * 根据地区代码获取地区名称
 * 
 * 此函数从配置存储中获取与给定地区代码对应的地区名称根据指定的名称类型
 * 如果地区代码无效或未找到对应的地区名称，则返回空字符串
 * 
 * @param {string} areaCode - 地区代码，用于标识特定的地区
 * @param {string} type - 名称类型，决定返回值的格式（默认为'fullName'）
 * @returns {string} - 地区名称，如果未找到则返回空字符串
 */
export const getRegionByCode = function (areaCode, type = 'fullName') {
  let regionName = '';
  const { regionMap } = useCounterStore();
  if (areaCode) {
    regionName = regionMap.get(String(areaCode)) ? regionMap.get(String(areaCode))[type] : '';
  }
  console.log(regionName);
  
  return regionName;
};

/**
 * 生成uuid
 * @param {Number} len 长度；
 * @param {Number} radix 进制  2位2进制  10 为10进制  16为16进制；
 * @returns {String}
 * 结果  String
 **/
export function uuid(len = 32, radix = 16) {
  let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  let uuid = [], i;
  radix = radix || chars.length;

  if (len) {
    // Compact form
    for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
  } else {
    // rfc4122, version 4 form
    let r;
    // rfc4122 requires these characters
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
    uuid[14] = '4';
    // Fill in random data.  At i==19 set the high bits of clock sequence as
    // per rfc4122, sec. 4.1.5
    for (i = 0; i < 36; i++) {
      if (!uuid[i]) {
        r = 0 | Math.random() * 16;
        uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r];
      }
    }
  }
  return uuid.join('');
}